package ace.j2se.l1;

/**
 * @Title:Student.java
 * @Package basic
 * @Description:学生类
 * @Author Kevin Guan E-mail:gjybst@163.com
 * @date Aug 25, 20114:03:50 PM
 * @Version
 * 
 */

public class StudentEnumnTest {
	private Grade grade;

	public void assignGrade(Grade grade) {
		this.grade = grade;
	}

	public Grade getGrade() {
		return this.grade;
	}

	public static void main(String[] args) {
		StudentEnumnTest std = new StudentEnumnTest();
		std.assignGrade(Grade.A);
		System.out.println(std.getGrade());

		for (Grade g : Grade.values()) {
			System.out.println(g);
		}
		switch (std.getGrade()) {
		case A:
			System.out.println("is grade A");
			break;
		case B:
			System.out.println("is grade B");
			break;
		case C:
			System.out.println("is grade C");
			break;
		case D:
			System.out.println("is grade D");
			break;
		case E:
			System.out.println("is grade E");
			break;
		case INCOMPLETE:
			System.out.println("is INCOMPLETE");
			break;
		default:
			System.out.println("has a grade of " + std.getGrade().toString());
			break;

		}
	}
}

class OldGrade {
	public static final int A = 1;
	public static final int B = 2;
	public static final int C = 3;
	public static final int D = 4;
	public static final int F = 5;
	public static final int INCOMPLETE = 6;
	/*
	 * 弊端： 这意味着该方法可以接受任何int类型的值，即使它和 OldGrade 中定义的所有级别都不对应。
	 * 因此，您需要检测上界和下界，在出现无效值的时候， 可能还要包含一个 IllegalArgumentException。
	 * 而且，如果后来又添加另外一个级别（例如 OldGrade.WITHDREW_PASSING ）， 那么必须改变所有代码中的上界，才能接受这个新值。
	 */
}

enum Grade {
	A, B, C, D, E, INCOMPLETE
}
